fail2ban nasıl çalışır?
Fail2Ban, SSH ve diğer servislerde oluşan başarısız giriş denemelerini izleyerek belirli bir sayıdan sonra saldırgan IP adreslerini otomatik olarak yasaklayan güçlü bir güvenlik aracıdır. Bu rehber, Fail2Ban'in iç mekanizmasını — filtreler, jails, aksiyon dosyaları ve iptables entegrasyonu — derinlemesine açıklar.
Bu rehberde ne öğreneceksiniz?
- Fail2Ban’in log izleme ve brute-force tespit mantığı
- Jail, filter ve action dosyalarının nasıl çalıştığı
- iptables üzerinde ban kurallarının nasıl üretildiği
- bantime, findtime ve maxretry ayarlarının davranışları
- Fail2Ban’in tam çalışma akış sırası
- Filtre regex’lerinin nasıl IP yakaladığı
- Fail2Ban’in firewall zincirlerini nasıl oluşturduğu
1. Fail2Ban Nedir ve Ne İşe Yarar?
Fail2Ban, log dosyalarını gerçek zamanlı izleyerek tekrar eden başarısız giriş denemelerini tespit eder ve saldırgan IP’leri iptables/nftables üzerinden otomatik şekilde yasaklar.
Koruma sağlanan yaygın hizmetler:
- SSH
- Nginx
- FTP
- Postfix/Dovecot gibi mail servisleri
Fail2Ban saldırıyı durdurmaz; saldırganı erişim dışı bırakır.
2. Fail2Ban’in Mimarisi
Fail2Ban üç temel bileşenle çalışır:
1. Filtreler (Filter)
Log dosyalarını regex ile tarar.
Her filtre içinde failregex bulunur.
failregex = ^%(__prefix_line)sFailed password for .* from <HOST>
→ <HOST> saldırgan IP adresidir.
2. Hücreler (Jail)
Bir servisin nasıl korunacağını tanımlar.
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
3. Eylemler (Action)
Banlama, unban ve firewall yapılarını kontrol eder.
iptables -I fail2ban-ssh 1 -s <ip> -j REJECT
3. Fail2Ban Dosya Hiyerarşisi
Fail2Ban tüm dosyaları şu sırayla okur:
/etc/fail2ban/fail2ban.conf
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local (özelleştirme burada yapılır)
filter.d/*.conf
action.d/*.conf
Bu sıralama nasıl davranacağını belirler.
4. jail.local İçindeki Önemli Parametreler
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 10m
findtime = 10m
maxretry = 3
banaction = iptables-multiport
chain = INPUT
| Parametre | Açıklama |
|---|---|
| ignoreip | Banlanmayacak IP’ler |
| bantime | IP’nin yasak kalma süresi |
| findtime | Maksimum deneme sayısının ölçüldüğü zaman aralığı |
| maxretry | Bu denemeden sonra ban uygulanır |
| banaction | Hangi firewall aksiyonu kullanılacak |
| chain | INPUT/FORWARD zinciri |
5. Filtre (failregex) Mantığı
Filtre dosyası loglardaki saldırıları yakalar.
failregex = ^%(__prefix_line)sFailed password for .* from <HOST>
Regex şunları yakalar:
başarısız şifre denemeleri
illegal user hataları
authentication failure mesajları
root login refused satırları
Fail2Ban IP adresini line içindeki <HOST>'tan çıkarır.
6. Action (Eylem) Dosyalarının Mantığı
En yaygın aksiyon: iptables-multiport.conf
actionstart — zincir oluşturma
iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp --dport 22 -j fail2ban-ssh
actionban — IP engelleme
iptables -I fail2ban-ssh 1 -s <ip> -j REJECT
actionunban — IP serbest bırakma
iptables -D fail2ban-ssh -s <ip> -j REJECT
7. Fail2Ban’in Tam Çalışma Akışı
-
Konfigürasyon dosyaları yüklenir
-
enabled = true olan jails etkinleştirilir
-
actionstart çalışır → firewall zinciri oluşturulur
-
logpath dosyası izlenmeye başlanır
-
failregex eşleşirse sayaç artar
-
sayaç maxretry’ye ulaşırsa IP banlanır
-
bantime bitince IP unban yapılır
-
Bu loop kesintisiz devam eder.
SSS — Sıkça Sorulan Sorular
1. Yanlışlıkla kendimi banladım. Ne yapmalıyım?
sudo fail2ban-client set sshd unbanip <IP>
2. Banlanan IP’leri nasıl görüntülerim?
sudo fail2ban-client status sshd
3. Hangi firewall’larla uyumlu?
iptables, nftables, ufw, firewalld.
4. Sadece SSH için mi işe yarar?
Hayır, Nginx, Postfix, Dovecot, FTP gibi pek çok servisi koruyabilir.
5. Daha sert güvenlik için önerilen ayarlar?
bantime = 1h
maxretry = 3
##Sonuç Artık Fail2Ban’in:
-
log izleme mantığını
-
filtre regex sistemini
-
firewall zinciri yapısını
-
ban/unban mekanizmasını anahtar teslim şekilde biliyorsun.
Bu yapıyı kendi sunucularında hemen uygulayabilir ve güvenliği ciddi şekilde artırabilirsin.